# coding=utf8
try:
    f = open('foo.txt', 'w')
    f.write('这是一个测试文件，用于测试异常!!')
except IOError:
    print 'Error: 没有找到文件或读取文件失败'
else:
    print '内容写入文件成功'
    f.close()

import os

os.remove('foo.txt')
try:
    f = open('foo.txt', 'r')
    f.write('这是一个测试文件，用于测试异常!!')
except IOError:
    print 'Error: 没有找到文件或读取文件失败'
else:
    print '内容写入文件成功'
    f.close()

# 使用except而不带任何异常类型
try:
    f = open('foo.txt', 'r')
    f.write('这是一个测试文件，用于测试异常!!')
except:
    print 'Error: 没有找到文件或读取文件失败'
else:
    print '内容写入文件成功'
    f.close()
# 使用except而带多种异常类型
try:
    f = open('foo.txt', 'r')
    f.write('这是一个测试文件，用于测试异常!!')
except IOError, e:
    print 'Error: 没有找到文件或读取文件失败'
else:
    print '内容写入文件成功'
    f.close()

# try-finally 语句
try:
    f = open('foo.txt', 'r')
    try:
        f.write('这是一个测试文件，用于测试异常!!')
    finally:
        print '内容写入文件成功'
        f.close()
except IOError, e:
    print 'Error: 没有找到文件或读取文件失败'

# 触发异常
try:
    raise Exception, "Invalid level!"
except Exception, e:
    print '捕获异常', e
else:
    print '无异常'


class Networkerror(RuntimeError):
    def __init__(self, args):
        self.args = args


try:
    raise Networkerror, 'Bad hostname'
except Networkerror, e:
    print e.args
